#作用域
#分为全局变量和局部变量
#在函数内修改全局变量值可以使用  声明为全局变量 globe 变量名
a=100
def fun1():
    a = 10
    print(a)
fun1()
print(a)
def fun2():
    global a
    a = 20
    print(a)
fun2()
print(a)
#匿名函数
#定义 函数名 = lambda 形参 : 返回值
add = lambda a,b : a+b
print(add(10,20))
#内置函数 python内置的函数
#abs() 返回绝对值
print(abs(-15))
#sum(可迭代对象) 求和
print(sum([10,20]))
#max() min() 求最大最小值 第二个参数key 可以指定对参数进行什么操作 比如abs求绝对值
print(max([-10,5],key=abs))
#zip(可迭代对象,可迭代对象) 将可迭代对象做为参数,将相对应元素组成元组形式 没有相对应的则没有
print(zip([1,2,3,4],["a","b","c"]))
for i in zip([1,2,3,4],["a","b","c"]):
    print(i)
print(list(zip([1,2,3,4],["a","b","c"])))
#map(函数,可迭代对象) 对可迭代对象中的每一个元素一一对应 也就是将每个元素都执行一遍函数
def fun3(x):
    return x*x
mp = map(fun3,[1,2,3,4,5]) #函数不用加括号
for i in mp:
    print(i)
#reduce(函数,可迭代对象) 累积 需要导包 将两个参数取出计算出一个值后存着,与第三个数进行计算
def fun4(a,b):
    return a+b
from functools import reduce
res = reduce(fun4,[1,2,3,4,5]) #函数必须为两个参数
print(res)
#拆包 对函数中的多种返回数据,去掉元组,列表,字典,直接获取里面数据
tua = (1,2,3,4)
a,b,c,d = tua #用对应的变量获取元组对应的元素 需要两边个数相同
print(tua)
print(a,b,c,d)
a,*b = tua #*变量名 将剩余的元素放入这个变量中
print(a,b)
